using System.IO;
using CloudStorage.API.Blobs;

namespace CloudStorage.Factories
{
  /// <summary>
  /// Creates transients instances of <see cref="IBlobInfo" />
  /// </summary>
  public interface IBlobFactory
  {
    /// <summary>
    /// Creates a Blob locally. <seealso cref="IBlobDataContext.PutBlob"/>
    /// </summary>
    /// <param name="name">The name of the blob</param>
    /// <param name="contentEncoding">Specifies which content encodings have been applied to the blob.</param>
    /// <param name="contentType">The MIME content type of the blob.</param>
    /// <param name="contentLanguage">Specifies the natural languages used by this resource.</param>
    /// <param name="content">The content body</param>
    /// <returns>A transient <see cref="IBlobInfo"/> object</returns>
    IBlobInfo GetTransientBlob(string name, string contentEncoding, string contentType, string contentLanguage, Stream content);
  }
}